package api

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"gvb-server/Request"
	"gvb-server/logic"
	"gvb-server/utils"
)

var AdvertLogic = logic.LogicGroup.AdvertLogic

// Advert 广告列表
// @Tags 广告管理
// @Summary 广告列表
// @Description 广告列表
// @Param data query Request.AdvertRequest false "查询参数"
// @Produce application/json
// @Router /api/advert [get]
// @Success 200 {object} utils.Response{data=utils.RList[models.Advert]}	// 嵌套返回列表 注意范式结构体
func (a Advert) Advert(c *gin.Context) {
	var s Request.AdvertRequest
	err := c.ShouldBindQuery(&s)

	if err != nil {
		utils.Fail("", "参数错误", c)
	}

	if s.Page == 0 {
		s.Page = utils.Page
	}
	if s.Size == 0 {
		s.Size = utils.Size
	}

	uRs, err := AdvertLogic.GetList(s)

	if err != nil {
		utils.Fail("", "查询错误", c)
		return
	}

	utils.Success(uRs, "", c)
}

// AdvertCreate 新增
// @Tags 广告管理
// @Summary 创建广告
// @Description 创建广告
// @Param data body Request.AdvertCreateRequest true "多参数"
// @Produce application/json
// @Router /api/advert [post]
// @Success 200 {object} utils.Response{}
func (a Advert) AdvertCreate(c *gin.Context) {
	var s Request.AdvertCreateRequest
	err := c.ShouldBindJSON(&s)
	if err != nil {
		msg := utils.GetValidMsg(err, &s)
		utils.Fail("", msg, c)
		return
	}
	uRs := AdvertLogic.CreateAdvert(s)

	if uRs.Status == utils.ERROR {
		utils.Success("", uRs.Msg, c)
		return
	}
	utils.Success("", uRs.Msg, c)
}

// AdvertDel 广告批量删除
// @Tags 广告管理
// @Summary 广告批量删除
// @Description 广告批量删除
// @Param data body Request.AdvertDelRequest true "ID必须"
// @Produce application/json
// @Router /api/advert [DELETE]
// @Success 200 {object} utils.Response{}
func (a Advert) AdvertDel(c *gin.Context) {
	var s Request.AdvertDelRequest
	err := c.ShouldBindJSON(&s)

	if err != nil {
		msg := utils.GetValidMsg(err, &s)
		utils.Fail("", msg, c)
		return
	}

	uRs := AdvertLogic.DelAdvert(s)
	if uRs.Status == utils.ERROR {
		utils.Success("", uRs.Msg, c)
		return
	}

	utils.Success("", uRs.Msg, c)
}

// AdvertEdit 广告修改
// @Tags 广告管理
// @Summary 广告修改
// @Description 广告修改
// @Param data body Request.AdvertEditRequest true "参数必须"
// @Produce application/json
// @Router /api/advert [put]
// @Success 200 {object} utils.Response{}
func (a Advert) AdvertEdit(c *gin.Context) {
	var s Request.AdvertEditRequest
	err := c.ShouldBindJSON(&s)

	fmt.Println(s)
	if err != nil {
		msg := utils.GetValidMsg(err, &s)
		utils.Fail("", msg, c)
		return
	}

	uRs := AdvertLogic.UpdateAdvert(s)
	if uRs.Status == utils.ERROR {
		utils.Success("", uRs.Msg, c)
		return
	}
	utils.Success("", uRs.Msg, c)
}
